<?
include("../config.php");
require_once("cResultado.php");
require_once("PHPLogger.php");

$LOGGER = new PHPLogger(LOGGER_PATH, LOGGER_LEVEL);

class CAuditoria
{
   	var $id;
    var $tablaId;
    var $objetivo;
    var $tipoAuditoria;		// 1: ACCESO, 2: VINCULO
   	var $tipoVinculo;		// 1: WEB, 2: CELULAR
	var $fechaYHora;	
   	var $ip;
   	var $genericFk;
	
	function __construct()
    {
	}
	   	   	
   	function getAuditoriasByWhere($where)
	{
		global $LOGGER;
		$arrayAuditorias = array();

		// SE CONECTA CON LA BASE DE DATOS
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB); 
     	if( mysqli_connect_errno() )
		{
			$LOGGER->addLine('ERROR', "getAuditoriasByWhere : ". mysqli_connect_error());
       		return $arrayAuditorias;
     	}

		// SE GENERA LA CONSULTA QUE TRAE LOS DATOS DE LA BASE DE DATOS
		$query = "	SELECT *
					FROM auditoria "
					. $where ."
					ORDER BY fechaYHora DESC ";
	  	if( !$mysqli->real_query($query) )
		{
			$LOGGER->addLine('ERROR', "getAuditoriasByWhere : ". $mysqli->error.' CONSULTA: '.$query);
       		return $arrayAuditorias;
     	}

		// POR CADA REGISTRO OBTENIDO SE GENERA EL OBJETO CAUDITORIA CORRESPONDIENTE Y SE LO AGREGA AL ARRAY     	
     	$resultado = BykomCliente::getResultado( $mysqli );
		$cantidad = $resultado->cantidad();
		for( $i=0; $i<$cantidad; $i++ )
		{
			$id = $resultado->campo('id', $i);
			$tablaId = $resultado->campo('tablaId', $i);
			$objetivo = $resultado->campo('objetivo', $i);
			$tipoAuditoria = $resultado->campo('tipoAuditoria', $i);
			$tipoVinculo = $resultado->campo('tipoVinculo', $i);
			$fechaYHora = $resultado->campo('fechaYHora', $i);
			$ip = $resultado->campo('ip', $i);
			$genericFk = $resultado->campo('genericFk', $i);
			$auditoria = new CAuditoria($id, $tablaId, $objetivo, $tipoAuditoria, $tipoVinculo, $fechaYHora, $ip, $genericFk);
       		array_push($arrayAuditorias, $auditoria);
		}
		
 		$LOGGER->addLine('INFO', 'Auditoria -> Auditorias Listadas Satisfactoriamente');
		return $arrayAuditorias;
   	}
	
	public function persistir($auditoria)
	{
		if( $auditoria->id )
			return $this->modificar( $auditoria );
		else
			return $this->crear( $auditoria );
	}
	
	private function crear($auditoria)
	{
		global $LOGGER;

		// SE TOMAN LOS DATOS DE LA CAUDITORIA A PERSISTIR
		$tablaId = $auditoria->tablaId;
		$objetivo = $auditoria->objetivo;
		$tipoAuditoria = $auditoria->tipoAuditoria;
		$tipoVinculo = $auditoria->tipoVinculo;
		$fechaYHora = $auditoria->fechaYHora;
		$ip = $auditoria->ip;
		$genericFk = $auditoria->genericFk;

		// SE CONECTA CON LA BASE DE DATOS
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB); 
		if( mysqli_connect_errno() )
		{
			$LOGGER->addLine('ERROR', "Auditoria::crear() : ". mysqli_connect_error());
       		return new CAuditoria();
     	}

		// SE GENERA LA CONSULTA QUE GUARDA LOS DATOS EN LA BASE DE DATOS
		$query = "	INSERT INTO auditoria (tablaId, objetivo, tipoAuditoria, tipoVinculo, fechaYHora, ip, genericFk)
					VALUES (". $tablaId .", ". $objetivo .", ". $tipoAuditoria .", ". $tipoVinculo .", '". $fechaYHora ."', '". $ip ."', ". $genericFk.")";
	  	if( !$mysqli->real_query($query) )
		{
			$LOGGER->addLine('ERROR', "Auditoria::crear() : ". $mysqli->error.' CONSULTA: '.$query);
       		return new CAuditoria();
     	}

		// DEVOLVEMOS EL OBJETO CREADO CON EL ID CORRESPONDIENTE
		$auditoria->id = $mysqli->insert_id;

 		$LOGGER->addLine('INFO', 'Auditoria -> Auditoria Creada Satisfactoriamente');
		return $auditoria;
	}
	
	private function modificar($auditoria)
	{
		global $LOGGER;

		// SE TOMAN LOS DATOS DE LA CAUDITORIA A PERSISTIR
		$id = $auditoria->id;
		$tablaId = $auditoria->tablaId;
		$objetivo = $auditoria->objetivo;
		$tipoAuditoria = $auditoria->tipoAuditoria;
		$tipoVinculo = $auditoria->tipoVinculo;
		$fechaYHora = $auditoria->fechaYHora;
		$ip = $auditoria->ip;
		$genericFk = $auditoria->genericFk;

		// SE CONECTA CON LA BASE DE DATOS
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB); 
		if (mysqli_connect_errno()) 
		{
			$LOGGER->addLine('ERROR', "Auditoria::modificar() : ". mysqli_connect_error());
       		return $auditoria;
     	}

		// SE GENERA LA CONSULTA QUE GUARDA LOS DATOS EN LA BASE DE DATOS
		$query = "	UPDATE auditoria
					SET	tablaId = ". $tablaId .",
						objetivo = ". $objetivo .",
						tipoAuditoria = ". $tipoAuditoria .",
						tipoVinculo = ". $tipoVinculo .",
						fechaYHora = '". $fechaYHora ."',
						ip = '". $ip ."',
						genericFk = ". $genericFk ."
					WHERE id = ". $id;
	  	if( !$mysqli->real_query($query) )
		{
			$LOGGER->addLine('ERROR', "Auditoria::modificar() : ". $mysqli->error.' CONSULTA: '.$query);
       		return $auditoria;
     	}
     	
 		$LOGGER->addLine('INFO', 'Auditoria -> Auditoria Modificada Satisfactoriamente');
		return $auditoria;
	}
}
?>